package com.ruicar.afs.cloud.manage.common.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruicar.afs.cloud.common.core.entity.BaseEntity;
import com.ruicar.afs.cloud.common.modules.contract.enums.CaseStatusEnum;
import com.ruicar.afs.cloud.common.modules.contract.enums.CaseTypeEnum;
import com.ruicar.afs.cloud.common.modules.contract.enums.ProcessStatusEnum;
import com.ruicar.afs.cloud.common.modules.contract.enums.ReceiptSourceTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author: Lee
 * @date 2020-05-30 09:21:16 
 * @description 撤销收款信息表
 */
@Data
@Accessors(chain = true)
@TableName(value ="manage_collect_cancel", autoResultMap = true)
public class ManageCollectCancel extends BaseEntity<ManageCollectCancel> {
	/** 申请编号 */
	@ApiModelProperty("申请编号")
	private String applyNo;
	@ApiModelProperty("收据id")
	@JsonSerialize(using = ToStringSerializer.class)
	private Long receiptId;
	@ApiModelProperty("案件编号")
	private String caseNo;
	@ApiModelProperty("收款来源类型 枚举值：对公结算，微信还款，银行代扣")
	private ReceiptSourceTypeEnum sourceType;
	@ApiModelProperty("案件类型")
	private CaseTypeEnum caseType;
	/** 案件状态 枚举值：撤销未发起，撤销审核中，撤销审核通过，撤销审核拒绝 */
	@ApiModelProperty("案件状态 枚举值：撤销未发起，撤销审核中，撤销审核通过，撤销审核拒绝")
	private CaseStatusEnum caseStatus;
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("收款成功时间")
	private Date succeedTime;
	/** 名称 */
	@ApiModelProperty("名称")
	private String custName;
	/** 案件发起时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("案件发起时间")
	private Date startTime;
	/** 案件结束时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("案件结束时间")
	private Date endTime;
	/** 合同号 */
	@ApiModelProperty("合同号")
	private String contractNo;
	/** 收款银行 央行标准银行代码 */
	@ApiModelProperty("收款银行 央行标准银行代码")
	private String bankCode;
	/** 收款银行（分支行） */
	@ApiModelProperty("收款银行（分支行）")
	private String bankName;
	/** 收款电子联行号 */
	@ApiModelProperty("收款电子联行号")
	private String ebankCode;
	/** 收款账户名称 */
	@ApiModelProperty("收款账户名称")
	private String accountName;
	/** 通知邮箱 */
	@ApiModelProperty("通知邮箱")
	private String email;
	@ApiModelProperty("收款金额 不可为负数")
	private BigDecimal arriveAmt;
	/** 乐观锁 */
	@ApiModelProperty("乐观锁")
	private Integer revision;
	/** 收款来源id */
	@ApiModelProperty("收款来源id")
	@JsonSerialize(using = ToStringSerializer.class)
	private Long sourceId;
	/** 处理状态 */
	private ProcessStatusEnum processStatus ;
	/** 证件号码 */
	@ApiModelProperty("证件号码")
	@TableField(exist = false)
	private String certNo;
	@ApiModelProperty("合同状态")
	@TableField(exist = false)
	private String contractStatus;
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("结束时间 案件审批完成时间")
	@JSONField(format="yyyy-MM-dd HH:mm:ss")
	@TableField(exist = false)
	private Date endDate;

}
